package com.zbs.simbot.factory;


import com.zbs.simbot.annotations.Func;
import com.zbs.simbot.factory.dto.PluginInfo;
import com.zbs.simbot.config.SimBotConfig;
import com.zbs.simbot.constants.BaseConstants;
import com.zbs.simbot.enums.MsgType;
import com.zbs.simbot.enums.PermissionEnum;
import com.zbs.simbot.enums.QQListType;
import com.zbs.simbot.events.BaseMsgEvent;
import jakarta.annotation.PostConstruct;
import love.forte.simbot.definition.Member;
import org.springframework.util.StringUtils;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;

/**
 * 插件接口
 */
public interface BasePlugin {

    /**
     * order大的覆盖order小的，且覆盖BaseLoginType 同类型
     * @return Integer
     */
    Integer getOrder();

    /**
     * 唯一ID
     *
     * @return 插件唯一标识
     */
    String getId();

    /**
     * 基本信息
     *
     * @return PluginInfo
     */
    PluginInfo getInfo();

    /**
     * 默认执行方法
     * @param event 触发事件
     * @param plugin 当前插件
     */
    void defaultRun(BaseMsgEvent event, BasePlugin plugin);

    /**
     * 默认插件注册事件
     */
    @PostConstruct
    default void register() {
        if (StringUtils.hasLength(getId())) {
            BasePluginFactory.register(this.getId(),this);
        }
    }

}
